package com.neusoft.aclome.cmp.cloud.server.jcce.dto.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.neusoft.pub.cloud.provider.enums.CPUArch;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;


public class JcceJobDTO {

    /**
     * 任务 ID
     */
    @ApiModelProperty(hidden = true)
    private Long id;

    /**
     * 作业类型
     */
    @ApiModelProperty(hidden = true)
    private String jobType;

    /**
     * 作业名称
     */
    @ApiModelProperty(value = "作业名称", required = true)
    private String jobName;

    /**
     * 云平台类型
     */
    @ApiModelProperty(hidden = true)
    private String cloudType;

    /**
     * 云平台 ID
     */
    @ApiModelProperty(hidden = true)
    private Integer cloudPlatformId;

    /**
     * 指向虚拟机表ID
     */
    @ApiModelProperty(value = "执行虚拟机ID", required = true)
    private Integer virtualMachineId;

    /**
     * 工作目录
     */
    @ApiModelProperty(value = "工作目录", required = true)
    private String workDir;

    /**
     * 启动命令
     */
    @ApiModelProperty(value = "启动命令", required = true)
    private String command;

    /**
     * 作业提交时间
     */
    @ApiModelProperty(hidden = true)
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//接受前台的时间格式 传到后台的格式
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//作用：后台的时间 格式化 发送到前台
    private Date startTime;

    /**
     * 作业完成时间
     */
    @ApiModelProperty(hidden = true)
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//接受前台的时间格式 传到后台的格式
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//作用：后台的时间 格式化 发送到前台
    private Date endTime;

    /**
     * 作业状态
     */
    @ApiModelProperty(hidden = true)
    private String status;

    /**
     * 作业执行的进程id
     */
    private Integer pid;

    /**
     * 虚拟机名称
     */
    private String virtualMachineName;

    /**
     * 云平台名称
     */
    private String platformResourceName;

    /**
     * GPU型号
     */
    @ApiModelProperty(value = "GPU型号", required = false)
    private String gpuSpec;

    /**
     * GPU显存(GB)
     */
    @ApiModelProperty(value = "GPU显存(GB)", required = false)
    private Integer gpuMemorySize;

    /**
     * GPU数量
     */
    @ApiModelProperty(value = "GPU数量", required = false)
    private Double gpuAmount;

    /**
     * 内存(GB)
     **/
    @ApiModelProperty(value = "内存(GB)", required = false)
    private Double memorySize;
    /**
     * 处理器型号,如Intel Xeon E5-2xxx
     */
    @ApiModelProperty(value = "处理器型号,如Intel Xeon E5-2xxx", required = false)
    private String processorModel;

    /**
     * CPU架构
     */
    @ApiModelProperty(value = "CPU架构", required = false)
    private CPUArch arch;
    /**
     * CPU核心数
     */
    @ApiModelProperty(value = "CPU核心数", required = false)
    private Integer cpuCoreCount;
    /**
     * 到达时间
     */
    @ApiModelProperty(value = "到达时间", required = false)
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//接受前台的时间格式 传到后台的格式
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//作用：后台的时间 格式化 发送到前台
    private Date arriveTime;

    /**
     * 获取任务 ID
     *
     * @return id - 任务 ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置任务 ID
     *
     * @param id 任务 ID
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取作业类型
     *
     * @return job_type - 作业类型
     */
    public String getJobType() {
        return jobType;
    }

    /**
     * 设置作业类型
     *
     * @param jobType 作业类型
     */
    public void setJobType(String jobType) {
        this.jobType = jobType;
    }

    /**
     * 获取作业名称
     *
     * @return job_name - 作业名称
     */
    public String getJobName() {
        return jobName;
    }

    /**
     * 设置作业名称
     *
     * @param jobName 作业名称
     */
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }

    /**
     * 获取云平台类型
     *
     * @return cloud_type - 云平台类型
     */
    public String getCloudType() {
        return cloudType;
    }

    /**
     * 设置云平台类型
     *
     * @param cloudType 云平台类型
     */
    public void setCloudType(String cloudType) {
        this.cloudType = cloudType;
    }

    /**
     * 获取云平台 ID
     *
     * @return cloud_platform_id - 云平台 ID
     */
    public Integer getCloudPlatformId() {
        return cloudPlatformId;
    }

    /**
     * 设置云平台 ID
     *
     * @param cloudPlatformId 云平台 ID
     */
    public void setCloudPlatformId(Integer cloudPlatformId) {
        this.cloudPlatformId = cloudPlatformId;
    }

    /**
     * 获取作业提交时间
     *
     * @return start_time - 作业提交时间
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置作业提交时间
     *
     * @param startTime 作业提交时间
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取作业完成时间
     *
     * @return end_time - 作业完成时间
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * 设置作业完成时间
     *
     * @param endTime 作业完成时间
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * 获取作业状态
     *
     * @return status - 作业状态
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置作业状态
     *
     * @param status 作业状态
     */
    public void setStatus(String status) {
        this.status = status;
    }

    public Integer getVirtualMachineId() {
        return virtualMachineId;
    }

    public void setVirtualMachineId(Integer virtualMachineId) {
        this.virtualMachineId = virtualMachineId;
    }

    public String getWorkDir() {
        return workDir;
    }

    public void setWorkDir(String workDir) {
        this.workDir = workDir;
    }

    public String getCommand() {
        return command;
    }

    public void setCommand(String command) {
        this.command = command;
    }

    public Integer getPid() {
        return pid;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public String getVirtualMachineName() {
        return virtualMachineName;
    }

    public void setVirtualMachineName(String virtualMachineName) {
        this.virtualMachineName = virtualMachineName;
    }

    public String getPlatformResourceName() {
        return platformResourceName;
    }

    public void setPlatformResourceName(String platformResourceName) {
        this.platformResourceName = platformResourceName;
    }

    public String getGpuSpec() {
        return gpuSpec;
    }

    public void setGpuSpec(String gpuSpec) {
        this.gpuSpec = gpuSpec;
    }

    public Integer getGpuMemorySize() {
        return gpuMemorySize;
    }

    public void setGpuMemorySize(Integer gpuMemorySize) {
        this.gpuMemorySize = gpuMemorySize;
    }

    public Double getGpuAmount() {
        return gpuAmount;
    }

    public void setGpuAmount(Double gpuAmount) {
        this.gpuAmount = gpuAmount;
    }

    public Double getMemorySize() {
        return memorySize;
    }

    public void setMemorySize(Double memorySize) {
        this.memorySize = memorySize;
    }

    public String getProcessorModel() {
        return processorModel;
    }

    public void setProcessorModel(String processorModel) {
        this.processorModel = processorModel;
    }

    public CPUArch getArch() {
        return arch;
    }

    public void setArch(CPUArch arch) {
        this.arch = arch;
    }

    public Integer getCpuCoreCount() {
        return cpuCoreCount;
    }

    public void setCpuCoreCount(Integer cpuCoreCount) {
        this.cpuCoreCount = cpuCoreCount;
    }

    public Date getArriveTime() {
        return arriveTime;
    }

    public void setArriveTime(Date arriveTime) {
        this.arriveTime = arriveTime;
    }
}